#ifndef CLIENTSYNCOBJECT_H
#define CLIENTSYNCOBJECT_H

#include <QString>
#include <QVariant>
#include <QObject>

class ClientSyncObject : public QObject
{
    Q_OBJECT
public:
    ClientSyncObject(QString name,QString type,QString subtype);
    ~ClientSyncObject();
    QString getName();
    QString getType();
    QString getSubtype();
    void initArguments(int numargs, ...);

    void addArgument(QString argName,int arg);
    void addArgument(QString argName,float arg);
    void addArgument(QString argName,double arg);
    void addArgument(QString argName,QString arg);

    void setArgument(QString argName, int value);
    void setArgument(QString argName, float value);
    void setArgument(QString argName, double value);
    void setArgument(QString argName, QString value);

    QVariant* getArgument(QString argName);
    QMap<QString,QVariant*> getArgs();
    bool getInitialized();
    void finishInitializtion();
private:
    QString name,type,subtype;
    QMap<QString,QVariant*> args;
    bool initialized;

signals:
    void finalized(ClientSyncObject* thisSyncObject);
};

#endif // CLIENTSYNCOBJECT_H
